#include <regx52.h>

#define uchar unsigned char
#define uint  unsigned int

void Delay1ms() //@12.000MHz
{
    unsigned char data i, j;

    i = 2;
    j = 239;
    do {
        while (--j)
            ;
    } while (--i);
}

// 延时指定毫秒值
void Delay(uint x)
{
    while (x != 0) {
        Delay1ms();
        x--;
    }
}

/**
 * @brief 测试delay
 *
 */
void testDelay()
{
    while (1) {
        P2_0 = 0;
        Delay(500);
        P2_0 = 1;
        Delay(500);
    }
}

// 独立按键控制led灯
void testLed()
{
    while (1) {
        if (P3_1 == 0) { // 按下
            Delay(20);
            while (P3_0 == 0)
                ;
            Delay(20);

            // 按下之后，小灯亮
            P2_0 = 0;
        } else { // 松手
            Delay(20);
            while (P3_0 == 0)
                ;
            Delay(20);

            // 松手之后，小灯灭
            P2_0 = 1;
        }
    }
}

void test()
{
    char LEDnum = 0; // initialize at 0000 0000

    // 最开始，最右侧小灯亮
    P2 = ~0x01; // initial condiction:0000 0001 ->actually:1000 0000
    while (1) {

				// 独立按键1，左移
				if (P3_1 == 0) // move left
        {
            Delay(20);
            while (P3_1 == 0);
            Delay(20);

            LEDnum++;
            if (LEDnum >= 8) {
                LEDnum = 0;
            }
						
            P2 = ~(0x01 << LEDnum);
											
        }
			
				// 独立按键2，右移
        if (P3_0 == 0) // move right
        {
            Delay(20);
            while (P3_0 == 0);
            Delay(20);

            LEDnum--;
            if (LEDnum < 0) {
                LEDnum = 7;
            }
            P2 = ~(0x01 << LEDnum); // 0000 0001 -> 0000 0010 -> actually:0100 0000
        }

        
    }
}

void main()
{
    // testDelay();
    // testLed();
	test();
}
